package org.abettor.angleworm.router;

/**
 * 与Peer通信的路由器，负责监控并管理路由信息
 * @author <a href="http://www.abettor.org/" target="_blank">abettor</a>
 *
 */
public interface Router extends Runnable
{
	/**
	 * 获取到达目的Peer的路由
	 * @throws RouteException
	 */
	public Route getRoute() throws RouteException;

	/**
	 * 获取连接到目的Peer的通信隧道
	 * @throws RouteException
	 */
	public Tunnel getTunnel() throws RouteException;

	/**
	 * 停止路由器的工作并销毁之
	 */
	public void dispose();
}
